8   ' *** (FFT07-02A) FFT 2ND TEST ***

10 SCREEN 9, 1, 1: COLOR 15, 1

20 Q = 8: Q2 = Q / 2: DIM Y(Q)

30 PI = 3.141592653589793#: P2 = 2 * PI: K1 = P2 / Q: K2 = P2 / Q

40 CLS : PRINT SPC(30); "MAIN MENU": PRINT : PRINT

50 PRINT SPC(5); "1 = ANALYZE COS COMPONENT TRIANGLE": PRINT

60 PRINT SPC(5); "2 = EXIT ": PRINT

70 PRINT SPC(10); "MAKE SELECTION :";

80 A$ = INKEY$: IF A$ = "" THEN 80

90 A = VAL(A$): ON A GOSUB 600, 990

95 GOTO 40

100   ' *** FFT ***

110 C3(0) = (Y(0) + Y(4)) / 2

112 C3(1) = (Y(0) - Y(4)) / 2

114 C4(0) = (Y(2) + Y(6)) / 2

116 C4(1) = (Y(2) - Y(6)) / 2

118 C5(0) = (Y(1) + Y(5)) / 2

120 C5(1) = (Y(1) - Y(5)) / 2

122 C6(0) = (Y(3) + Y(7)) / 2

124 C6(1) = (Y(3) - Y(7)) / 2

126 C1(0) = (C3(0) + C4(0)) / 2

128 C1(1) = C3(1) / 2: S1(1) = C4(1) / 2

130 C1(2) = (C3(0) - C4(0)) / 2

132 C1(3) = C3(1) / 2: S1(3) = -C4(1) / 2

134 C2(0) = (C5(0) + C6(0)) / 2

136 C2(1) = C5(1) / 2: S2(1) = C6(1) / 2

138 C2(2) = (C5(0) - C6(0)) / 2

140 C2(3) = C5(1) / 2: S2(3) = -C6(1) / 2

170 FOR I = 0 TO Q2 - 1

172 FC(I) = (C1(I) + C2(I) * COS(K2 * I) - S2(I) * SIN(K2 * I)) / 2

174 FS(I) = (S1(I) + C2(I) * SIN(K2 * I) + S2(I) * COS(K2 * I)) / 2

176 NEXT

180 FOR I = Q2 TO Q - 1

182 FC(I) = (C1(I - Q2) + C2(I - Q2) * COS(K2 * I) - S2(I - Q2) * SIN(K2 * I)) / 2

184 FS(I) = (S1(I - Q2) + C2(I - Q2) * SIN(K2 * I) + S2(I - Q2) * COS(K2 * I)) / 2

186 NEXT

188 RETURN

200 'T9 = TIMER - T9

205 CLS : PRINT "FREQ      F(COS)       F(SIN)": PRINT : PRINT

210 FOR Z = 0 TO Q

215 GOSUB 300

220 NEXT Z

222 PRINT : PRINT "TIME ="; T9 / 1000

225 PRINT : PRINT : INPUT "C/R TO CONTINUE:"; A$

230 RETURN

300 PRINT USING "##_      "; Z;

310 PRINT USING "+##.#####_    "; FC(Z); FS(Z)

330 RETURN

400   ' GENERATE COS COMPONENT TRIANGLE

410 FOR I = 0 TO Q: Y(I) = 0

420 FOR J = 1 TO Q / 2 STEP 2: Y(I) = Y(I) + COS(K1 * J * I) / (J * J): NEXT

430 NEXT

440 RETURN

600   ' * 7 COMPONENT TRIANGLE *

610 GOSUB 400

618 T9 = TIMER

620 FOR Z = 1 TO 1000

622 GOSUB 100

624 NEXT Z

626 T9 = TIMER - T9

628 GOSUB 200

630 RETURN

990 END



